	package dao;
	
	import gestores.GestorBD;
	
	import java.sql.ResultSet;
	import java.sql.SQLException;

	
	public class DAO_Encuentros {
		private static DAO_Encuentros INSTANCE = null;
	   /**
	   * constructor
	   */
	  private DAO_Encuentros() {
		}
	    
	  /**
	   *  Metodo para obtener una instancia, si existe la devuelve, sino la crea
	   * @return instancia si existe
	   */
	  public static DAO_Encuentros getInstance(){
			if (INSTANCE == null) { 
	          INSTANCE = new DAO_Encuentros();
	        }
			return INSTANCE;
	  }
	
	public void insertarResultadoPart1(int id_encuentro) {
		// TODO Auto-generated method stub
		GestorBD.getInstance().actualizar("INSERT INTO `resultado_part1` (`id_resultado_part1`, `ganador`, `perdedor`, " +
				"`puntuacion`, `set_1`, `set_2`, `set_3`, `set_4`, `set_5`, `set_6`, `set_7`, `set_8`, `set_9`)" +
				"VALUES ("+ id_encuentro +", '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', " +
						"'"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"')");
		
	}
	
	public void insertarResultadoPart2(int id_encuentro) {
		// TODO Auto-generated method stub
		GestorBD.getInstance().actualizar("INSERT INTO `resultado_part2` (`id_resultado_part2`, `ganador`, `perdedor`, " +
				"`puntuacion`, `set_1`, `set_2`, `set_3`, `set_4`, `set_5`, `set_6`, `set_7`, `set_8`, `set_9`) " +
				"VALUES ("+ id_encuentro +", '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', " +
						"'"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"', '"+"-1"+"')");
		
	}
	
	public void insertarEncuentro(int id_encuentro, int nroFecha, int nroEncuentro , int id_competencia, int id_lugar,String id_part1, String id_part2) {
		// TODO Auto-generated method stub
		GestorBD.getInstance().actualizar("INSERT INTO `competencias`.`encuentro` (`id_encuentro`, `fecha`, `numero_encuentro`, " +
				"`id_competencia`, `id_lugar`, `id_resultado`, `id_part1`, `asistio_part1`, `id_part2`, `asistio_part2`, " +
				"`jugado`, `proximo_encuentro`, `eliminada`) " +
				"VALUES ("+ id_encuentro +", "+ nroFecha +", "+nroEncuentro+", "+ id_competencia +", "+ id_lugar +"," +
				" "+ id_encuentro +", "+ id_part1 +", '0', "+ id_part2 +", '0', '0', NULL, '0')");
	}
	
	
	
	//Metodo que dado el nombre de una competencia obtiene todos los id encuentro que no esten eliminados
	public ResultSet getIdEncuentros(String nombreCompetencia) throws SQLException {
		// TODO Auto-generated method stub
	
		return GestorBD.getInstance().ejecutar("SELECT `encuentro`.`id_encuentro` " +
				"FROM `encuentro`, `competencia` " +
				"WHERE `competencia`.`nombre`='"+ nombreCompetencia +"' " +
				"AND `encuentro`.`id_competencia`= `competencia`.`id_competencia` " +
				"AND `competencia`.`eliminada`='0' " +
				"AND `encuentro`.`eliminada`='0'");
		
	}
	
	
	
	public ResultSet getDatosEncuentro(String id_encuentro) {
		// TODO Auto-generated method stub
		return GestorBD.getInstance().ejecutar("SELECT `encuentro`.`fecha`, `encuentro`.`numero_encuentro`, `encuentro`.`asistio_part1`," +
				" `encuentro`.`asistio_part2`, `encuentro`.`jugado` , `encuentro`.`proximo_encuentro`" +
				"FROM `encuentro` WHERE `encuentro`.`id_encuentro`='"+ id_encuentro +"'");
	}

	
	
	public ResultSet getResultadoEncuentro(String id_encuentro) {
		// TODO Auto-generated method stub
		return GestorBD.getInstance().ejecutar("SELECT `resultado`.`id_resultado`, `resultado`.`tipo_resultado`, `resultado_part1`.`ganador` AS `ganador_part1`, " +
				"`resultado_part1`.`perdedor` AS `perdedor_part1`, `resultado_part1`.`puntuacion` AS `puntuacion_part1`, " +
				"`resultado_part1`.`set_1` AS `set_1_part1`, `resultado_part1`.`set_2` AS `set_2_part1`, " +
				"`resultado_part1`.`set_3` AS `set_3_part1` , `resultado_part1`.`set_4` AS `set_4_part1` , `resultado_part1`.`set_5` AS `set_5_part1` ," +
				"`resultado_part1`.`set_6` AS `set_6_part1` , `resultado_part1`.`set_7` AS `set_7_part1` , `resultado_part1`.`set_8` AS `set_8_part1` ," +
				"`resultado_part1`.`set_9` AS `set_9_part1` , `resultado_part2`.`ganador` AS `ganador_part2` , `resultado_part2`.`perdedor` AS `perdedor_part2`, " +
				"`resultado_part2`.`puntuacion` AS `puntuacion_part2`, `resultado_part2`.`set_1` AS `set_1_part2`, `resultado_part2`.`set_2` AS `set_2_part2`, " +
				"`resultado_part2`.`set_3` AS `set_3_part2`, `resultado_part2`.`set_4` AS `set_4_part2`, `resultado_part2`.`set_5` AS `set_5_part2`,  " +
				"`resultado_part2`.`set_6` AS `set_6_part2`, `resultado_part2`.`set_7` AS `set_7_part2`, `resultado_part2`.`set_8` AS `set_8_part2`, " +
				"`resultado_part2`.`set_9` AS `set_9_part2` " +
				"FROM `resultado`, `resultado_part1`, `resultado_part2`, `encuentro` " +
				"WHERE `encuentro`.`id_encuentro`='"+id_encuentro+"'" +
				"AND `encuentro`.`id_resultado`=`resultado`.`id_resultado`" +
				"AND `resultado`.`resultado_part1`=`resultado_part1`.`id_resultado_part1`" +
				"AND `resultado`.`resultado_part2`=`resultado_part2`.`id_resultado_part2`" +
				"AND `resultado`.`eliminada`='0'" +
				"AND `resultado_part1`.`eliminada`='0'" +
				"AND `resultado_part2`.`eliminada`='0'");
	}

	public ResultSet getHistorialEncuentro(String id_encuentro) {
		// TODO Auto-generated method stub
		return GestorBD.getInstance().ejecutar("SELECT `historial_resultado`.`fecha`, " +
				"`historial_part1`.`ganador` AS `ganador_part1`, `historial_part1`.`perdedor` AS `perdedor_part1`, " +
				"`historial_part1`.`puntuacion` AS `puntuacion_part1`, `historial_part1`.`set_1` AS `set_1_part1` , " +
				"`historial_part1`.`set_2` AS `set_2_part1`, `historial_part1`.`set_3` AS `set_3_part1`, " +
				"`historial_part1`.`set_4` AS `set_4_part1` , `historial_part1`.`set_5` AS `set_5_part1`, " +
				"`historial_part1`.`set_6` AS `set_6_part1`, `historial_part1`.`set_7` AS `set_7_part1` , " +
				"`historial_part1`.`set_8` AS `set_8_part1`, `historial_part1`.`set_9` AS `set_9_part1`, " +
				"`historial_part2`.`ganador` AS `ganador_part2`, `historial_part2`.`perdedor` AS `perdedor_part2`, " +
				"`historial_part2`.`puntuacion` AS `puntuacion_part2`, `historial_part2`.`set_1` AS `set_1_part2`, " +
				"`historial_part2`.`set_2` AS `set_2_part2`, `historial_part2`.`set_3` AS `set_3_part2`, " +
				"`historial_part2`.`set_4` AS `set_4_part2`, `historial_part2`.`set_5` AS `set_5_part2`, " +
				"`historial_part2`.`set_6` AS `set_6_part2`, `historial_part2`.`set_7` AS `set_7_part2`, " +
				"`historial_part2`.`set_8` AS `set_8_part2`, `historial_part2`.`set_9` AS `set_9_part2` " +
				"FROM `historial_resultado`, `historial_part1`, `historial_part2`, `encuentro` " +
				"WHERE `encuentro`.`id_encuentro`='"+ id_encuentro +"' " +
				"AND `historial_resultado`.`id_resultado`=`encuentro`.`id_resultado` " +
				"AND `historial_resultado`.`id_historial_part1`=`historial_part1`.`id_historial_part1` " +
				"AND `historial_resultado`.`id_historial_part2`=`historial_part2`.`id_historial_part2` " +
				"AND `historial_resultado`.`eliminada`='0' " +
				"AND `historial_part1`.`eliminada`='0'" +
				"AND `historial_part2`.`eliminada`='0'");
	}

	
	
	
	public ResultSet esPart1Libre(String id_encuentro) {
		return GestorBD.getInstance().ejecutar("SELECT `encuentro`.`id_part1` " +
				"FROM `encuentro` " +
				"WHERE `encuentro`.`id_encuentro` = '"+ id_encuentro+"' " +
				"AND `encuentro`.`id_part1` IS NULL");
		
	}
	

	public ResultSet esPart2Libre(String id_encuentro) {
		return GestorBD.getInstance().ejecutar("SELECT `encuentro`.`id_part2` " +
				"FROM `encuentro` " +
				"WHERE `encuentro`.`id_encuentro` = '"+ id_encuentro+"' " +
				"AND `encuentro`.`id_part2` IS NULL");
		
	}


	public void actualizarEstado(String estado, int nroEncuentro, int fecha, String id_competencia) {
		
		GestorBD.getInstance().actualizar("UPDATE `encuentro` SET `jugado`= '"+ estado+"'" +
				"WHERE `encuentro`.`numero_encuentro`='"+nroEncuentro+"' " +
				"AND `fecha`='"+ fecha+"' " +
				"AND `id_competencia` = '"+ id_competencia+"' " +
				"AND `eliminada`='0'");
		
	}
	



}
